<div class="d-flex align-items-center login-content">
  <form [formGroup]="myForm" (ngSubmit)="onSubmit(myForm.value)">
    <h3 class="d-flex justify-content-center">用户登录</h3>
    <p *ngIf="myForm.invalid" class="text-danger">表单无效！</p>
    <p>{{name$ | async}}</p>
    <div class="form-group">
      <label for="username">用户名</label>
      <input type="text" class="form-control  " id="userName" aria-describedby="请输入用户名" name="userName"
        formControlName="userName" [ngClass]="{'is-invalid':userName.invalid, 'is- valid':userName.valid}">
      <div class="valid-feedback">用户名格式正确</div>
      <div class="invalid-feedback">
        <span *ngIf="userName.hasError('required')"> 用户名必须填写</span>
        <span *ngIf="!userName.hasError('required') &&userName.hasError('invalidUser')">用户名必须以zime开头！</span>
      </div>
    </div>
    <div class="form-group">
      <label for="password">密码</label>
      <input type="password" class="form-control  " id="password" name="password" formControlName="password"
        [ngClass]="{'is-invalid':password.invalid, 'is-valid':password.valid}">
      <div class="valid-feedback">密码填写正确</div>
      <div class="invalid-feedback">密码必须大于6位</div>
    </div>
    <button type="submit" class="btn btn-primary  btn-block">提交</button>
  </form>
</div>